
/**
 * Copyright (c) subnew
 * Licensed under the GPL;
 * @email:joseanluo@gmail.com
 * @Title: DAO.java
 * @Package com.subnew.copyman.frame.dao
 */
package com.subnew.mango.frame.dao;

import java.io.Serializable;
import java.util.List;

import com.subnew.mango.frame.exception.DaoException;


/**
 * DAO层抽象接口基层类
 *@author JoseanLuo  
 * @date  2014年9月1日 上午11:28:32
 * @version V1.0 
 */
public abstract interface DAO <T,PK extends Serializable>{
	/**
	* 保存新增的对象.
	* @param entity
	* @throws DaoException  
	* @Title: save
	* @author JoseanLuo  
	* @date 2014年9月9日 下午8:50:10
	* @version V1.0
	 */
	public Serializable save(final T entity) throws DaoException;
	
	/**
	 * 
	* 保存修改的对象.
	* @param entity
	* @throws DaoException  
	* @Title: update
	* @author JoseanLuo  
	* @date 2014年9月9日 下午8:50:55
	* @version V1.0
	 */
	public void update(final T entity) throws DaoException;
	/**
	 * 
	* 通过ID查找对象。
	* @param pk  ＩＤ
	* @return　查找到实例。
	* @throws DaoException  
	* @Title: findByPk
	* @author JoseanLuo  
	* @date 2014年9月9日 下午9:21:19
	* @version V1.0
	 */
	public T findByPk(final PK pk) throws DaoException; 
	
	/**
	 * 
	* 通过ID删除对象。
	* @param pk
	* @throws DaoException  
	* @Title: delete
	* @author JoseanLuo  
	* @date 2014年9月11日 上午10:00:52
	* @version V1.0
	 */
	public void delete(final PK pk) throws DaoException;
	
	/**
	 * 
	* 通过IDS集合删除对象
	* @param pks
	* @throws DaoException  
	* @Title: deleteByPks
	* @author JoseanLuo  
	* @date 2014年9月11日 上午10:26:26
	* @version V1.0
	 */
	public void deleteByPks(final List<PK> pks) throws DaoException;
}
